home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / prog_c / cuj0696.zip / DWYER.ZIP / RUN.TST / RUNTST.C < prev    next >
C/C++ Source or Header  |  1996-03-26  |  2KB  |  70 lines

  1. /* ============ */
  2. /* RunTst.c    */
  3. /* ============ */
  4. #include <math.h>
  5. #include <miscdefs.h>
  6. #include <rundefs.h>
  7. #include <mconf.h>
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10.  
  11. #define SQR(X)    ((X) * (X))
  12.  
  13. #define    FULL_SIZE  ((unsigned)RAND_MAX + 1U)
  14. int    RandNums[FULL_SIZE];
  15. double    ChiSqProb[NUM_PROBS];
  16.  
  17. /* ==================================================================== */
  18. /* main - Performs Runs-Up Test per Knuth Vol. 2, p. 74, Ex. 12 & 14    */
  19. /* ==================================================================== */
  20. void
  21. main()
  22. {
  23.     INIT_DATA_STRU InitialData;
  24.     RUN_DATA_STRU RunData;
  25.     double  KnMinusStat, KnMinusProb, KnPlusStat, KnPlusProb;
  26.  
  27.     AbortGracefully();            /* Cause ^C to Behave */
  28.  
  29.     printf("\n\t\tR U N  T E S T\n\n");
  30.     GetInitialData(&InitialData);
  31.     /* -------------------------- */
  32.     /* Print Initial Data Entries */
  33.     /* -------------------------- */
  34.     printf("\nStarting Seed = %u%s\n", InitialData.UserSeed,
  35.     (InitialData.SeedSrce == (UINT) (-1)) ?
  36.     " (Unsigned Integer Part of Time of Day)" : "");
  37.     printf("Generator     = %s\n", InitialData.GenName);
  38.  
  39.     RunData.RandFun = InitialData.RandFun;
  40.     RunData.RandArray = RandNums;
  41.     RunData.ChiSqProb = ChiSqProb;
  42.  
  43.     SetRunControls(&RunData);
  44.  
  45.     GenerateChiSquareData(&RunData);
  46.  
  47.     if (RunData.CallStatus == TRUE)
  48.     {
  49.     /* -------------------------------------------------------- */
  50.     /* Calculate K-S on Chi-Square Statistics and Probabilities */
  51.     /* -------------------------------------------------------- */
  52.     fflush(NULL);
  53.     KSCalc(ChiSqProb, NUM_PROBS,
  54.         &KnPlusStat, &KnPlusProb,
  55.         &KnMinusStat, &KnMinusProb);
  56.  
  57.     printf("\nKolmogorov-Smirnov Statistics and Probabilities"
  58.         " on Chi-Square Data\n");
  59.  
  60.     printf("\tK(%d)+ = %f (Knuth) or %9f%%\n", NUM_PROBS,
  61.         sqrt((double) NUM_PROBS) * KnPlusStat, 100 * KnPlusProb);
  62.  
  63.     printf("\tK(%d)- = %f (Knuth) or %9f%%\n", NUM_PROBS,
  64.         sqrt((double) NUM_PROBS) * KnMinusStat, 100 * KnMinusProb);
  65.     }
  66.  
  67.     printf("\nThis Run Required %ld Random Numbers\n\n",
  68.     RunData.TotVariates);
  69. }
  70.